package com.myjob.handlerImpl;

import cn.hutool.core.date.*;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * 配置 Mybatis—Plus，插入、更新时间的填充策略
 * @author Chen Yuan
 * @create 2021-01-22  13:16
 */
@Slf4j
@Component
public class DateHandler implements MetaObjectHandler {
	// 初始化时间
	String format = DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN);
	DateTime date = DateUtil.parse(format);
	/**
	 * 插入时填充策略
	 */
	@Override
	public void insertFill(MetaObject metaObject) {

		log.info(" +++【DateHandler】进入 insertFill，插入时填充策略 ------");
		// 设置字段的值
		/** 三个参数
		 * String fieldName ：需要处理的字段名
		 * Object fieldVal : 想要插入的字段值
		 * MetaObject metaObject ：给哪个数据处理
		 */
		this.setFieldValByName("createTime",date,metaObject);
		this.setFieldValByName("updateTime",date,metaObject);

		this.setFieldValByName("createDate",date,metaObject);
		this.setFieldValByName("updateDate",date,metaObject);
	}
	/**
	 * 更新时填充策略
	 */
	@Override
	public void updateFill(MetaObject metaObject) {
		log.info(" +++【DateHandler】进入 updateFill，更新时填充策略 ------");
		this.setFieldValByName("updateTime",date,metaObject);

		this.setFieldValByName("updateDate",date,metaObject);
	}
}
